<script type="text/html" data-template-name="snmp">
    <div class="form-row">
        <label for="node-input-host"><i class="fa fa-globe"></i> Host</label>
        <input type="text" id="node-input-host" placeholder="ip address(:optional port)">
    </div>
    <div class="form-row">
        <label for="node-input-community"><i class="fa fa-user"></i> Community</label>
        <input type="text" id="node-input-community" placeholder="public">
    </div>
    <div class="form-row">
        <label for="node-input-version"><i class="fa fa-bookmark"></i> Version</label>
        <select type="text" id="node-input-version" style="width:150px;">
            <option value="1">v1</option>
            <option value="2c">v2c</option>
        </select>
        <span style="margin-left:50px;">Timeout</span>
        <input type="text" id="node-input-timeout" placeholder="secs" style="width:50px; direction:rtl; vertical-align:baseline;">&nbsp;S
    </div>
    <div class="form-row">
        <label for="node-input-oids"><i class="fa fa-tags"></i> OIDs</label>
        <textarea rows="4" cols="60" id="node-input-oids" placeholder="e.g. 1.3.6.1.2.1.1.5.0" style="width:70%;"></textarea>
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: Multiple OIDs can be separated by commas.</div>
</script>

<script type="text/html" data-help-name="snmp">
    <p>Simple SNMP oid or oid list fetcher. Triggered by any input.</p>
    <p><code>msg.host</code> may contain the host.</p>
    <p><code>msg.community</code> may contain the community.</p>
    <p><code>msg.oid</code> may contain a comma separated list of oids to request. (no spaces)</p>
    <p>OIDs must be numeric. iso. is the same a 1. </p>
    <p>The node will output <code>msg.payload</code> and <code>msg.oid</code>.</p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('snmp', {
        category: 'network-input',
        color: "YellowGreen",
        defaults: {
            host: { value: "127.0.0.1" },
            community: { value: "public" },
            version: { value: "1", required: true },
            oids: { value: "" },
            timeout: { value: 5 },
            name: { value: "" }
        },
        inputs: 1,
        outputs: 1,
        icon: "snmp.png",
        label: function () {
            return this.name || "snmp " + this.host;
        },
        labelStyle: function () {
            return this.name ? "node_label_italic" : "";
        }
    });
</script>

<script type="text/html" data-template-name="snmp set">
    <div class="form-row">
        <label for="node-input-host"><i class="fa fa-globe"></i> Host</label>
        <input type="text" id="node-input-host" placeholder="ip address(:optional port)">
    </div>
    <div class="form-row">
        <label for="node-input-community"><i class="fa fa-user"></i> Community</label>
        <input type="text" id="node-input-community" placeholder="public">
    </div>
    <div class="form-row">
        <label for="node-input-version"><i class="fa fa-bookmark"></i> Version</label>
        <select type="text" id="node-input-version" style="width:150px;">
            <option value="1">v1</option>
            <option value="2c">v2c</option>
        </select>
        <span style="margin-left:50px;">Timeout</span>
        <input type="text" id="node-input-timeout" placeholder="secs" style="width:50px; direction:rtl; vertical-align:baseline;">&nbsp;S
    </div>
    <div class="form-row">
        <label for="node-input-varbinds"><i class="fa fa-tags"></i> Varbinds</label>
        <textarea rows="10" cols="60" id="node-input-varbinds" placeholder="e.g. [ { &quot;oid&quot;: &quot;1.3.6.1.2.1.1.5.0&quot;,&quot;type&quot;: &quot;OctetString&quot;,&quot;value&quot;: &quot;host1&quot;},{&quot;oid&quot;: &quot;1.3.6.1.2.1.1.6.0&quot;,&quot;type&quot;: &quot;OctetString&quot;,value: &quot;somewhere&quot;}]"
            style="width:70%;"></textarea>
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: Numeric inputs must be numbers not strings, e.g. 1 not "1".</div>
</script>

<script type="text/html" data-help-name="snmp set">
    <p>Simple snmp Set node. Trigger by any input</p>
    <p><code>msg.host</code> may contain the host.</p>
    <p><code>msg.community</code> may contain the community.</p>
    <p><code>msg.varbinds</code> may contain varbinds as an array of json objects containing multiple oids, types and values.
        <pre>[
    {
        "oid":   "1.3.6.1.2.1.1.5.0",
        "type":  "OctetString",
        "value": "host1"
    },
    {   "oid":   ... }
]</pre>
    <p>Any numeric inputs must be numbers, not strings, e.g. 1  not "1".</p>
    <p>OIDs must be numeric. iso. is the same a 1.</p>
    </p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('snmp set', {
        category: 'network-input',
        color: "YellowGreen",
        defaults: {
            host: { value: "127.0.0.1" },
            community: { value: "public" },
            version: { value: "1", required: true },
            varbinds: { value: "" },
            timeout: { value: 5 },
            name: { value: "" }
        },
        inputs: 1,
        outputs: 0,
        icon: "snmp.png",
        label: function () {
            return this.name || "snmp set " + this.host;
        },
        labelStyle: function () {
            return this.name ? "node_label_italic" : "";
        }
    });
</script>

<script type="text/html" data-template-name="snmp table">
    <div class="form-row">
        <label for="node-input-host"><i class="fa fa-globe"></i> Host</label>
        <input type="text" id="node-input-host" placeholder="ip address(:optional port)">
    </div>
    <div class="form-row">
        <label for="node-input-community"><i class="fa fa-user"></i> Community</label>
        <input type="text" id="node-input-community" placeholder="public">
    </div>
    <div class="form-row">
        <label for="node-input-version"><i class="fa fa-bookmark"></i> Version</label>
        <select type="text" id="node-input-version" style="width:150px;">
            <option value="1">v1</option>
            <option value="2c">v2c</option>
        </select>
        <span style="margin-left:50px;">Timeout</span>
        <input type="text" id="node-input-timeout" placeholder="secs" style="width:50px; direction:rtl; vertical-align:baseline;">&nbsp;S
    </div>
    <div class="form-row">
        <label for="node-input-oids"><i class="fa fa-tags"></i> OID</label>
        <input type="text" id="node-input-oids" placeholder="e.g. 1.3.6.1.2.1.1.5.0">
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: ONLY accepts a single OID.</div>
</script>

<script type="text/html" data-help-name="snmp table">
    <p>Simple SNMP oid table fetcher. Triggered by any input.</p>
    <p><code>msg.host</code> may contain the host.</p>
    <p><code>msg.community</code> may contain the community.</p>
    <p><code>msg.oid</code> may contain the oid of a table to request.</p>
    <p>OID must be numeric. iso. is the same a 1.</p>
    <p>The node will output <code>msg.payload</code> and <code>msg.oid</code>.</p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('snmp table', {
        category: 'network-input',
        color: "YellowGreen",
        defaults: {
            host: { value: "127.0.0.1" },
            community: { value: "public" },
            version: { value: "1", required: true },
            oids: { value: "" },
            timeout: { value: 5 },
            name: { value: "" }
        },
        inputs: 1,
        outputs: 1,
        icon: "snmp.png",
        label: function () {
            return this.name || "snmp table " + this.host;
        },
        labelStyle: function () {
            return this.name ? "node_label_italic" : "";
        }
    });
</script>

<script type="text/html" data-template-name="snmp subtree">
    <div class="form-row">
        <label for="node-input-host"><i class="fa fa-globe"></i> Host</label>
        <input type="text" id="node-input-host" placeholder="ip address(:optional port)">
    </div>
    <div class="form-row">
        <label for="node-input-community"><i class="fa fa-user"></i> Community</label>
        <input type="text" id="node-input-community" placeholder="public">
    </div>
    <div class="form-row">
        <label for="node-input-version"><i class="fa fa-bookmark"></i> Version</label>
        <select type="text" id="node-input-version" style="width:150px;">
            <option value="1">v1</option>
            <option value="2c">v2c</option>
        </select>
        <span style="margin-left:50px;">Timeout</span>
        <input type="text" id="node-input-timeout" placeholder="secs" style="width:50px; direction:rtl; vertical-align:baseline;">&nbsp;S
    </div>
    <div class="form-row">
        <label for="node-input-oids"><i class="fa fa-tags"></i> OID</label>
        <input type="text" id="node-input-oids" placeholder="e.g. 1.3.6.1.2.1.1.5.0">
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: ONLY accepts a single OID (node).</div>
</script>

<script type="text/html" data-help-name="snmp subtree">
    <p>Simple SNMP oid subtree fetcher. Triggered by any input. Reads all OIDS at and below the current base OID.</p>
    <p><code>msg.host</code> may contain the host.</p>
    <p><code>msg.community</code> may contain the community.</p>
    <p><code>msg.oid</code> may contain the oid of a table to request.</p>
    <p>OID must be numeric. iso. is the same a 1. </p>
    <p>The node will output <code>msg.payload</code> and <code>msg.oid</code>.</p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('snmp subtree', {
        category: 'network-input',
        color: "YellowGreen",
        defaults: {
            host: { value: "127.0.0.1" },
            community: { value: "public" },
            version: { value: "1", required: true },
            oids: { value: "" },
            timeout: { value: 5 },
            name: { value: "" }
        },
        inputs: 1,
        outputs: 1,
        icon: "snmp.png",
        label: function () {
            return this.name || "snmp subtree " + this.host;
        },
        labelStyle: function () {
            return this.name ? "node_label_italic" : "";
        }
    });
</script>


<script type="text/html" data-template-name="snmp walker">
    <div class="form-row">
        <label for="node-input-host"><i class="fa fa-globe"></i> Host</label>
        <input type="text" id="node-input-host" placeholder="ip address(:optional port)">
    </div>
    <div class="form-row">
        <label for="node-input-community"><i class="fa fa-user"></i> Community</label>
        <input type="text" id="node-input-community" placeholder="public">
    </div>
    <div class="form-row">
        <label for="node-input-version"><i class="fa fa-bookmark"></i> Version</label>
        <select type="text" id="node-input-version" style="width:150px;">
            <option value="1">v1</option>
            <option value="2c">v2c</option>
        </select>
        <span style="margin-left:50px;">Timeout</span>
        <input type="text" id="node-input-timeout" placeholder="secs" style="width:50px; direction:rtl; vertical-align:baseline;">&nbsp;S
    </div>
    <div class="form-row">
        <label for="node-input-oids"><i class="fa fa-tags"></i> OID</label>
        <input type="text" id="node-input-oids" placeholder="e.g. 1.3.6.1.2.1.1.5.0">
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: ONLY accepts a single OID (node).</div>
</script>

<script type="text/html" data-help-name="snmp walker">
    <p>Simple SNMP oid walker fetcher. Triggered by any input. 
    Fetches all nodes from this OID to the end of the table.</p>
    <p><code>msg.host</code> may contain the host.</p>
    <p><code>msg.community</code> may contain the community.</p>
    <p><code>msg.oid</code> may contain the oid of a table to request.</p>
    <p>OID must be numeric. iso. is the same a 1. </p>
    <p>The node will output <code>msg.payload</code> and <code>msg.oid</code>.</p>
    <p><b>Note</b>: This node does indeed "walk" down the tree. This is different behaviour to 
    the typical snmpwalk command line app.</p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('snmp walker', {
        category: 'network-input',
        color: "YellowGreen",
        defaults: {
            host: { value: "127.0.0.1" },
            community: { value: "public" },
            version: { value: "1", required: true },
            oids: { value: "" },
            timeout: { value: 5 },
            name: { value: "" }
        },
        inputs: 1,
        outputs: 1,
        icon: "snmp.png",
        label: function () {
            return this.name || "snmp walker " + this.host;
        },
        labelStyle: function () {
            return this.name ? "node_label_italic" : "";
        }
    });
</script>
